/*
 * Copyright (c) 2025 EasyAdmin
 * All rights reserved.
 *
 * This file is part of the [EasAdmin] project.
 * Unauthorized copying of this file, via any medium, is strictly prohibited.
 * Proprietary and confidential.
 *
 * Author: EasyAdmin ( 1073602@qq.com )
 * Website: https://www.xhxiao.com
 */
package com.easy.module.system.service;

import com.easy.framework.database.service.IService;
import com.easy.framework.security.model.Role;
import com.easy.module.system.entity.SysRole;
import com.easy.module.system.query.SysRoleQuery;

import java.util.List;

/**
 * 角色管理 Service接口
 *
 * @author EasyAdmin ( 1073602@qq.com )
 * @date 2025-08-19
 */
public interface ISysRoleService extends IService<SysRole, SysRoleQuery> {

    /**
     * 查询角色信息列表
     *
     * @param query 角色信息
     * @return 角色信息
     */
    List<SysRole> queryList(SysRoleQuery query);

    /**
     * 新增角色信息
     *
     * @param dto 角色信息
     * @return 结果
     */
    boolean add(SysRole dto);

    /**
     * 修改角色信息
     *
     * @param dto 角色信息
     * @return 结果
     */
    boolean update(SysRole dto);

    /**
     * 批量删除角色信息
     *
     * @param roleIds 需要删除的角色信息主键集合
     * @return 结果
     */
    boolean deleteByIds(Long... roleIds);


    /**
     * 校验角色数据范围权限
     *
     * @param roleId 角色id
     */
    void validateDataScope(Long roleId);

    List<Long> getRoleIdListByUserId(Long userId);

    List<SysRole> getRoleListByUserId(Long userId);

    List<Role> getRolesByUserId(Long userId);

    List<Long> getDeptIdListByRoleId(Long roleId);

    /**
     * 修改数据权限信息
     *
     * @param role 角色信息
     * @return 结果
     */
    Boolean authDataScope(SysRole role);
}
